﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HomeCare.Model;
using HomeCare.Control;

namespace HomeCare.View
{
    public partial class CadMedicamento : Form
    {
        int id;
        private String acao = String.Empty;

        public CadMedicamento()
        {
            InitializeComponent();
        }

        private void CadMedicamento_Load(object sender, EventArgs e)
        {
            {
                BloquearCampos();
                BloquearBotoes();
                BloquearBotoesComando();
                LimparCampos();

                //Verifica Acesso aos botoes
                Pessoa pessoa = new Pessoa();
                pessoa.id = PessoaEstatica.ID;
                Tela tela = new Tela();
                tela.id = 5;
                tela.descricao = this.Name;
                VerificaAcesso(pessoa, tela);

                //popula combobox classificação
                cbxClassificacao.Items.Add(String.Empty);
                cbxClassificacao.Items.Add("Sem Tarja");
                cbxClassificacao.Items.Add("Tarja Vermelha");
                cbxClassificacao.Items.Add("Tarja Preta");
                
            }
        }

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnIncluir.Enabled = true;
            acao = "Incluir";
        }

        private void btnAlterar_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnAlterar.Enabled = true;
            ConMedicamento conMedicamento = new ConMedicamento(this);
            conMedicamento.Show();
            acao = "Alterar";
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnExcluir.Enabled = true;
            acao = "Excluir";
            ConMedicamento consultaMedicamento = new ConMedicamento(this);
            consultaMedicamento.Show();
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            BloquearBotoesComando();
            DesbloquearBotoes();
            btnConsultar.Enabled = true;

            acao = "Consultar";
            ConMedicamento consultaMedicamento = new ConMedicamento(this);
            consultaMedicamento.Show();
        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            MedicamentoControl medicamentoControl = new MedicamentoControl();
            Medicamento medicamento = new Medicamento();
            medicamento.id = id;
            medicamento.medicamento = tbxMedicamento.Text;
            medicamento.classificacao = cbxClassificacao.SelectedItem.ToString();
           
            string msg = medicamentoControl.ValidaMedicamento(medicamento);
            if (String.IsNullOrEmpty(msg))
            {
                switch (acao)
                {
                    case "Incluir":
                        bool retorno = medicamentoControl.InsereMedicamento(medicamento);
                        if (retorno)
                        {
                            MessageBox.Show("Medicamento inserido com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao inserir o Medicamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                    case "Alterar":
                        bool retorno2 = medicamentoControl.AlteraMedicamento(medicamento);
                        if (retorno2)
                        {
                            MessageBox.Show("Medicamento alterada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao alterar a Medicamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;

                    case "Excluir":
                        bool retorno3 = medicamentoControl.ExcluiMedicamento(medicamento);
                        if (retorno3)
                        {
                            MessageBox.Show("Medicamento excluido com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao excluir o medicamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                }
                   
                BloquearCampos();
                BloquearBotoes();
                LimparCampos();

                //Verifica Acesso aos botoes
                Pessoa pessoa = new Pessoa();
                pessoa.id = 1;
                Tela tela = new Tela();
                tela.id = 5;
                tela.descricao = this.Name;
                VerificaAcesso(pessoa, tela);
            }
            else
                MessageBox.Show(msg, "Erro de validação", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            BloquearCampos();
            BloquearBotoes();
            LimparCampos();

            //Verifica Acesso aos botoes
            Pessoa pessoa = new Pessoa();
            pessoa.id = 1;
            Tela tela = new Tela();
            tela.id = 5;
            tela.descricao = this.Name;
            VerificaAcesso(pessoa, tela);
        }
        private void DesbloquearCampos()
        {
            tbxMedicamento.Enabled = true;
            cbxClassificacao.Enabled = true;
        }

        private void BloquearCampos()
        {
            tbxMedicamento.Enabled = false;
            cbxClassificacao.Enabled = false;
        }

        private void LimparCampos()
        {
            tbxMedicamento.Text = String.Empty;
            cbxClassificacao.SelectedItem = 0;
        }

        private void BloquearBotoes()
        {
            btnCancelar.Enabled = false;
            btnConfirmar.Enabled = false;
        }

        private void DesbloquearBotoes()
        {
            btnCancelar.Enabled = true;
            btnConfirmar.Enabled = true;
        }

        private void BloquearBotoesComando()
        {
            btnIncluir.Enabled = false;
            btnAlterar.Enabled = false;
            btnExcluir.Enabled = false;
            btnConsultar.Enabled = false;
        }

        private void DesbloquearBotoesComando()
        {
            btnIncluir.Enabled = true;
            btnAlterar.Enabled = true;
            btnExcluir.Enabled = true;
            btnConsultar.Enabled = true;
        }
        private void VerificaAcesso(Pessoa pessoa, Tela tela)
        {
            AcessoControl acessoControl = new AcessoControl();
            DataSet acessoUsuario = acessoControl.VerificaAcesso(pessoa, tela);
            foreach (DataRow row in acessoUsuario.Tables[0].Rows)
            {
                if (row["Inclusao"].ToString() == "S")
                    btnIncluir.Enabled = true;
                if (row["Alteracao"].ToString() == "S")
                    btnAlterar.Enabled = true;
                if (row["Exclusao"].ToString() == "S")
                    btnExcluir.Enabled = true;
                if (row["Consulta"].ToString() == "S")
                    btnConsultar.Enabled = true;
            }
        }

        public void RecebeMedicamento(Medicamento medicamento)
        {
            this.Show();
            id = medicamento.id;
            tbxMedicamento.Text = medicamento.medicamento;
            cbxClassificacao.Text = medicamento.classificacao;
            btnIncluir.Enabled = false;
            btnAlterar.Enabled = true;
            btnExcluir.Enabled = true;
        }
    }
}
